SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paEjecutarContinuidadesDeServicios]
-- <DESCRIPCION> Realiza la continuidad de un Servicio.
-- <CONSIDERACIONES ESPECIALES>  
-- <TABLAS> tb_ServiciosAgentes, tb_SubServiciosAgentes, tb_ColaDeMovimientos, tb_PlazasDeMovimiento, tb_Plazas
-- <ACTUALIZACIONES> 17-05-2006 por OTERO, Javier (se mantiene solo la ultima continuidad que se pasa para una plaza, agente y mes y anio que correponde).
@idCola INT,
@AsignarNorma BIT,
@SubServicioDeLaNorma INT OUTPUT
AS

SET NOCOUNT ON

-- Atributos del subservicio a guardar  (tbSubServiciosRectificados) o elminar.
DECLARE @ServicioAgente INT
DECLARE @NroOrden INT
DECLARE @FechaAlta DATETIME
DECLARE @Baja VARCHAR(1)
DECLARE @FechaBaja DATETIME
DECLARE @FechaTermino DATETIME
DECLARE @Movimiento INT
DECLARE @TramiteAlta INT
DECLARE @TramiteBaja INT
DECLARE @NormaInicio INT
DECLARE @NormaFin INT
DECLARE @Plaza INT
DECLARE @SituacionLaboral INT
DECLARE @SituacionExtraordinaria INT
DECLARE @Nivel INT
DECLARE @Modalidad INT
DECLARE @Zona INT
DECLARE @Licencia INT
DECLARE @CodEnfermedad INT
DECLARE @EntidadCertificadora INT
DECLARE @NroCertificado INT
DECLARE @FechaCertificado DATETIME
DECLARE @EstadoLiqExt INT
DECLARE @idSubServicio INT
DECLARE @Error INT
DECLARE @Diagnostico VARCHAR(300)
DECLARE @Servicio INT
DECLARE @ErrorC INT

-- Atributos del SS Licencia a insertar en la cola
DECLARE @Agente INT
DECLARE @PlazaC INT
DECLARE @Fecha DATETIME
DECLARE @Organizacion INT
DECLARE @REsponsable INT
DECLARE @Fecha1 DATETIME
DECLARE @Fecha2 DATETIME
DECLARE @FechaTerminoC DATETIME
DECLARE @SitRev INT
DECLARE @NivelC INT
DECLARE @modalidadC INT
DECLARE @zonaC INT
DECLARE @cargosalarial INT
DECLARE @LicenciaC INT
DECLARE @cantidadhoras INT
DECLARE @movimientoC INT
DECLARE @estado INT
DECLARE @observaciones VARCHAR(255)
DECLARE @CausaAlta INT
DECLARE @borrar VARCHAR(1)
DECLARE @Destino INT
DECLARE @NormaTemporal INT
DECLARE @NormaContinuidad INT
DECLARE @Usuario INT

BEGIN TRANSACTION tranContinuidadesDeServicios

SELECT @ErrorC = 0, @Error = 0

SELECT @NormaTemporal = MAX(NormaTemporal)+1 FROM tb_SubServiciosAgentes

-- Se obtiene el Codigo de Usuario a partir del usuario NT
SELECT @Usuario = IdUsuario FROM tb_Usuarios WHERE  NTUser = USER_NAME()

--Saco los valores de la ColaDeMovimientos correspondientes a idCola
SELECT @Agente = Agente, @PlazaC = Plaza, @Fecha = Fecha, @Organizacion = Organizacion, @Responsable = Responsable, @Fecha1 = Fecha1,
@Fecha2 = Fecha2, @SitRev = SitRev, @NivelC = Nivel, @ModalidadC = Modalidad, @ZonaC = Zona, @cargosalarial = cargosalarial, @licenciaC = licencia,
@cantidadhoras = cantidadhoras, @movimientoC = movimiento, @Estado = Estado, @Observaciones = observaciones, @CausaAlta = CausaAlta, 
@FechaTerminoC = FechaTermino
FROM tb_ColaDeMovimientos 
WHERE idCola = @idCola

SELECT @NormaContinuidad = NULL
IF @AsignarNorma = 1
BEGIN
	-- SE CREA LA NORMA
	INSERT tb_Normas SELECT CONVERT(VARCHAR, UltimaNorma) +'-'+ CONVERT(VARCHAR, YEAR(GETDATE())), 1, 0, NULL, GETDATE(), NULL, 1, 0, @Usuario FROM tb_MovimientosDocentes WHERE Mnemo = 'T'
	SELECT @NormaContinuidad = @@IDENTITY, @ErrorC = @@ERROR
	IF @ErrorC <> 0
		SELECT @Error = @ErrorC

	UPDATE tb_MovimientosDocentes SET UltimaNorma = UltimaNorma + 1 WHERE Mnemo = 'T'
	SELECT @ErrorC = @@ERROR
	IF @ErrorC <> 0
		SELECT @Error = @ErrorC
END



UPDATE tb_ColaDeMovimientos SET NormaContinuidad = @NormaContinuidad WHERE IdCola = @IdCola
SELECT @ErrorC = @@ERROR
IF @ErrorC <> 0
	SELECT @Error = @ErrorC

DECLARE plazas CURSOR FOR SELECT servicio, idplaza FROM tb_PlazasDeMovimiento WHERE idCola = @idCola
OPEN plazas

FETCH NEXT FROM plazas INTo @idSubServicio, @Plaza

WHILE @@FETCH_STATUS = 0
BEGIN

	-- Primero extraigo todos los valores del SubServicio que se va a rectificar.
	SELECT @ServicioAgente = Servicioagente, @NroOrden = NroOrden9, @FechaAlta = FechaAlta, @FechaBaja = Fechabaja,@FechaTermino = FechaTermino, @Movimiento = Movimiento,
	@TramiteAlta = TramiteAlta, @TramiteBaja = TramiteBaja, @NormaInicio = NormaInicio, @NormaFin = NormaFin, @Plaza = Plaza, @SituacionLaboral = SituacionLaboral,
	@SituacionExtraordinaria = SituacionExtraordinaria, @Nivel = Nivel, @Modalidad = Modalidad, @Zona = Zona, @Licencia = Licencia, @CodEnfermedad = CodEnfermedad,
	@NroCertificado = NroCertificado, @EntidadCertificadora = EntidadCertificadora, @FechaCertificado = FechaCertificado, @EstadoLiqExt = EstadoLiqExt
	FROM tb_SubServiciosAgentes WHERE idSubServicio = @idSubServicio

	SELECT @Servicio = ServicioAgente FROM tb_SubServiciosAgentes WHERE idSubServicio = @idSubServicio

	-- Agregado el 17-05-2006
	IF EXISTS(SELECT top 1 PM.IdCola FROM tb_ColaDeMovimientos CM INNER JOIN tb_PlazasDeMovimiento PM ON PM.IdCola = CM.IdCola WHERE IdPlaza = @Plaza AND Movimiento = 10 AND Agente = @Agente AND Fecha1 = @Fecha1 AND CM.IdCola <> @IdCola)
	BEGIN
		DELETE C FROM tb_ColaDeMovimientos C INNER JOIN tb_PlazasDeMovimiento P ON P.idCola = C.IdCola WHERE C.Agente = @Agente AND Movimiento = 10 AND IdPlaza = @Plaza AND Fecha1 = @Fecha1 AND C.IdCola <> @IdCola
	END

	IF @FechaBaja IS NOT NULL
	BEGIN
		UPDATE tb_SubServiciosAgentes SET FechaBaja = NULL, Baja = 'N', NormaTemporal = @NormaTemporal,  NormaInicio = @NormaContinuidad WHERE idSubServicio = @idSubServicio
		SELECT @ErrorC = @@ERROR
		IF @ErrorC <> 0
			SELECT @Error = @ErrorC

		UPDATE tb_ServiciosAgentes SET FechaBaja = NULL, Baja = 'N'  WHERE idServicioagente = @ServicioAgente
		SELECT @ErrorC = @@ERROR
		IF @ErrorC <> 0
			SELECT @Error = @ErrorC
	END	
	ELSE
	BEGIN
		UPDATE tb_subserviciosAgentes SET NormaTemporal = @NormaTemporal, NormaInicio = @NormaContinuidad WHERE idSubservicio = @idSubServicio
		SELECT @ErrorC = @@ERROR
		IF @ErrorC <> 0
			SELECT @Error = @ErrorC
	END

	FETCH NEXT FROM plazas INTO @idSubServicio, @Plaza

END

CLOSE plazas
DEALLOCATE plazas

UPDATE tb_ColaDeMovimientos SET Estado = 4, NTUserEjecutor = SYSTEM_USER, FechaEjecucion = GETDATE()  WHERE IdCola = @IdCola 

SELECT @SubServicioDeLaNorma = @IdCola

IF @Error = 0
	COMMIT TRANSACTION tranContinuidadesDeServicios
ELSE
	ROLLBACK TRANSACTION tranContinuidadesDeServicios
GO
GRANT EXECUTE ON  [dbo].[paEjecutarContinuidadesDeServicios] TO [GestionInstitucional]
GRANT EXECUTE ON  [dbo].[paEjecutarContinuidadesDeServicios] TO [PersonalDocente]
GO
